/*
 * Project: Remote Access Control (RAC)
 * File: rac-gestion.c
 * Version: v5.5.10
 * Copyright (c) 2009-2010
 * Author: Jonathan Salwan
 * Mail: js.rac.projet@gmail.com
 * All rights reserved.
 *
 * English:
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 *
 * French:
 * La redistribution et l'utilisation sous forme source et binaire,
 * avec ou sans modification, sont autorisées à condition que les
 * conditions suivantes soient remplies:
 * 1. Les redistributions du code source doivent contenir la notice
 *    de copyright ci-dessus, cette liste de conditions et la clause
 *    de non responsabilité.
 * 2. Les redistributions sous forme binaire doivent reproduire la
 *    notice de copyright ci-dessus, cette liste de conditions et la
 *    clause de non responsabilité dans la documentation et / ou d'autres
 *    documents fournis avec la distribution.
 *
 */

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "unistd.h"
#include "crypt_pwd_gestion.h"
#include "info.h"
#include "ban_ip.h"
#include "attrib.h"

void root()
{
        fprintf(stderr,"\nErreur: Vous devez être root pour lancer l'outil de gestion RAC\n\n");
        exit(0);
}

int main(int argc, char *argv[])
{

	if(geteuid() == 0)
        {

	char text[128];
	char option[32];
	
        FILE *fp, *Fichier;
        if(fp = fopen(port_file,"r") == NULL)
        {
        fprintf(stderr,"\nErreur lors de l'ouverture du dossier /etc/rac/ veuillez installer le server\n\n");
	exit(0);
        }

	fprintf(stdout,"\n-------------------------------\n");
	fprintf(stdout,"       Outil Gestion RAC\n");
	fprintf(stdout,"-------------------------------\n");
	fprintf(stdout,">help (afficher les commandes)\n\n");

while(1)
  {
	printf("=>");
	scanf("%31s", &option);

	if(!strcmp(option, "help"))
                                {
                                fprintf(stdout,"Commandes Outil Gestion RAC\n");
				fprintf(stdout,"---------------------------\n");
				fprintf(stdout,"help : Affiche les commandes\n");
				fprintf(stdout,"version : Affiche les versions\n");
                                fprintf(stdout,"view-port : Affiche le port du server\n");
				fprintf(stdout,"change-port: Change le port server\n");
				fprintf(stdout,"change-pwd: Change le password\n");
				fprintf(stdout,"attrib: attribut les droits access\n");
				fprintf(stdout,"ban-ip: Bannir une IP\n");
				fprintf(stdout,"init: Initialise les configurations de base\n");
				fprintf(stdout,"exit : Quit l'ouil de Gestion\n");
				}
		if(!strcmp(option, "version"))
				{
				fprintf(stdout,"Version\n");
                                fprintf(stdout,"-------\n");
                                fprintf(stdout,"Outil Gestion RAC : %s\n", version_gestion);

        			if(fp = fopen(service_file, "r") == NULL)
        				{
					fprintf(stderr,"Server Rac : <server jamais encore lancé sur cette machine>\n");
					}
					else{
     						Fichier = fopen(service_file, "r" );
     						fgets( text, sizeof(text), Fichier);	
						fprintf(stdout,"Server Rac : %s \n", text); 
						}
				}
        	if(!strcmp(option, "view-port"))
                                {
					Fichier = fopen(port_file, "r" );
                                	fgets( text, sizeof(text), Fichier);
					fprintf(stdout,"Server actuellement actif sur le port %s\n", text);
				}
		if(!strcmp(option, "change-port"))
                                {
				char port[16];
				fprintf(stdout,"[+]Port : ");
				scanf("%15s", &port);
					port_conf(port);	
                                }
		if(!strcmp(option, "change-pwd"))
				{
				char pwd[50];
                        	fprintf(stdout,"[+]Password: ");
                        	scanf("%50s", &pwd);
					crypt_pwd(pwd);
				}
		if(!strcmp(option, "attrib"))
				{
				char choix[4];
				fprintf(stdout,"[+]Attention cette opération n'est pas recommandée, êtes vous sûr ?\n");
				fprintf(stdout,"o/n: ");
				scanf("%3s", &choix);
					attrib(choix);
				}
		if(!strcmp(option, "ban-ip"))
				{
				char ip[20];
				fprintf(stdout,"[+]IP: ");
				scanf("%20s", &ip);
					ban_ip(ip);
				}
		if(!strcmp(option, "init"))
				{
                                char choix[4];
				fprintf(stdout,"[+]Attention initialisation en cours, êtes vous sûr ?\n");
				fprintf(stdout,"o/n: ");
				scanf("%3s", &choix);
				init(choix);
				}
		if(!strcmp(option, "exit"))
				{
				exit(0);
				}
	}

  }//boucle while 

	else
        {
                root();
                exit(0);
        }


exit(0);
}
